問題解説: 永遠の国 第二のトラブル
ICTSC8お疲れさまでした。大阪工業大学3年の山口です。
今回は永遠の国の2問目を担当いたしました。この問題は、dockerとmDNSを利用した問題です。
問題文
エルフの長の頼みを解決したことにより、あなたたちはこの村で熱烈な歓迎をうけた。飲めや歌えやの大騒ぎに圧倒されているところへ、一人のエルフが駆け込んできた。
エルフ「突然webサイトが見られなくなったんだ! 見られるようにしてくれないか?」
エイト「調べて見るわ!任せなさい!」
数分が経過した。
エイト「……何が原因かわからないわね……昨日何か変わったことがありませんでしたか?」
エルフ「そうだな~。昨日の落雷があるまでは動いていたから、もしかしたらそれが原因かもしれないな」
エイト「それよ、そうに違いないわっ! じゃああとは任せたわよ!」
解説
この問題では、サーバ構築後に再起動のテストを行っておらず、再起動時にトラブルが発生したことを想定しました。
トラブルの内容は、コンテナの起動順に問題があるため、コンテナが正常起動しないというものです。
今回の環境では、管理サーバ・ウェブサーバの両方にWAN用とLAN用のインターフェイスが用意されていました。簡易な図だと下のようになります。
ウェブサーバでは、WAN側からのSSHが行われないようiptablesにてフィルタをかけていました。そのため、LAN側からSSHで接続する必要があります。
しかしLAN側のインターフェイスでは、DHCPなどでIPアドレスの設定がされていないため、自動で割り当てられるリンクローカルアドレスにて接続する必要がありました。
今回の環境では、mDNSの設定がすでにされている状態でしたので、avahi-resolveを使用することでIPv6のアドレスを取得できます。
解答の手順としましては、
1.管理サーバのインターフェイス ens4 のインターフェイスをupする。
2.avahi-resolveを利用して、webサーバのv6のIPアドレスを取得する。
3.sshでens4よりwebサーバへ接続し、dockerの状態を確認する。
web$ sudo docker ps -a
4.docker startでコンテナを起動する(80%)
5.rc.localファイルに記述されているコンテナの起動順序を修正する。
修正前
docker start sql
修正後
docker start wordpress
6.再起動し、コンテナが正常に起動することを確認する。(100%)
という流れでした。
総評
webサーバの22番ポートを閉じていたため、問題が正常に解答できる状態なのか、という所に疑問に持たれる方が多かったです。今回はiptablesを使用してフィルタをかけていたため、これは正常な挙動でした。
今回の問題はお楽しみいただけたでしょうか?